package org.bite.lesson09;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

/**
 * JDK中的线程池
 * @Author kiku-wa
 */
public class Demo901 {
    public static void main(String[] args) {
        //1、用来处理大量短时间的线程任务，
        // 当线程池中没有可用的线程时会自动创建新的线程，
        // 如果线程空闲60秒将收回并移出缓存
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
        //2、创建一个操作无界队列并固定大小的线程池
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
        //3、创建一个操作无界队列且只有一个工作线程的线程池
        ExecutorService singleThreadPool = Executors.newSingleThreadExecutor();
        //4、创建一个单线程执行器，可以在给定时间后执行或定期执行
        ScheduledExecutorService singleThreadScheduledExecutor = Executors.newSingleThreadScheduledExecutor();
        //5、创建一个指定大小的线程池，可以在给定时间后执行或定期执行
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
        //6、创建一个指定大小（不传参数，为当前机器CPU核心数Runtime.getRuntime().availableProcessors()）的线程池，并行处理任务，不保证处理顺序
        Executors.newWorkStealingPool();
        System.out.println(Runtime.getRuntime().availableProcessors());
    }
}
